// Vue
import Vue from 'vue'
import i18n from './i18n'
import App from './App'
// 核心插件
import d2Admin from '@/plugin/d2admin'
// store
import store from '@/store/index'
//Vxe-table
import vxeTable from '@/plugin/vxeTable'

// 菜单和路由设置
import getMenu from './menu/loadMenu'
import router from './router'

// import initRouterFun from './router'
import { menuHeader, menuAside } from '@/menu'
import { frameInRoutes } from '@/router/routes'

getMenu().then(ret => {
  ret.menuHeader.forEach(p => { menuHeader.push(p) })
  ret.menuAside.forEach(p => { menuAside.push(p) }) 
  ret.frameInRoutes.forEach(p => {
    frameInRoutes.push(p)
    router.addRoute(p)
  })
  
  // const router = initRouterFun(frameInRoutes)

  Vue.use(vxeTable)
  // 核心插件
  Vue.use(d2Admin)
  Vue.use(formCreate)

  new Vue({
    router,
    store,
    i18n,
    render: h => h(App),
    updated() {
    },
    created() {
      // 处理路由 得到每一级的路由设置
      this.$store.commit('d2admin/page/init', frameInRoutes)
      // 设置顶栏菜单
      this.$store.commit('d2admin/menu/addHeader', menuHeader)
      // this.$store.commit('d2admin/menu/headerSet', menuHeader)
      // 设置侧边栏菜单
      this.$store.commit('d2admin/menu/addAside', menuAside)
      // this.$store.commit('d2admin/menu/asideSet', menuAside)
      // 初始化菜单搜索功能
      this.$store.commit('d2admin/search/init', menuAside)
    },
    mounted() {
      // 展示系统信息
      this.$store.commit('d2admin/releases/versionShow')
      // 用户登录后从数据库加载一系列的设置
      this.$store.dispatch('d2admin/account/load')
      // 获取并记录用户 UA
      this.$store.commit('d2admin/ua/get')
      // 初始化全屏监听
      this.$store.dispatch('d2admin/fullscreen/listen')
    }
  }).$mount('#app')
})